// 作者：la vie est belle
// 博客地址：https://pyqt5.blog.csdn.net/article/details/103018384

cc.Class({
    extends: cc.Component,

    properties: {
        bgAudio: {
            default: null,
            type: cc.AudioClip
        },

        adResult: cc.Label
    },

    // LIFE-CYCLE CALLBACKS:

    onLoad () {
        this.videoAd = null;                // 激励视频广告
        this.initVideoAd();                 // 初始化
        this.playMusic();                   // 播放背景音乐
    },

    playMusic () {
        // 循环播放背景音乐
        cc.audioEngine.playMusic(this.bgAudio, true);
        cc.audioEngine.setMusicVolume(0.6);
    },

    initVideoAd() {
        if (typeof wx === 'undefined') {
            return;
        }

        // 创建激励视频广告实例，提前初始化
        this.videoAd = wx.createRewardedVideoAd({
            adUnitId: '这里放你自己的广告位ID'
        });

        this.videoAd .onError(err => {
            console.log('激励视频展示失败');
            console.log(err);

            this.adResult.string = '激励视频展示失败';
            this.adResult.node.parent.active = true;
        });

        this.videoAd.onClose(res => {
            // 用户点击了【关闭广告】按钮
            // 小于 2.1.0 的基础库版本，res 是一个 undefined
            if (res && res.isEnded || res === undefined) {
                // 正常播放结束，可以下发游戏奖励
                console.log('奖励已经发放');
                this.videoAd.offClose();

                this.adResult.string = '奖励已经发放';
                this.adResult.node.parent.active = true;
            }
            else {
                // 提前关闭广告，不发放奖励
                console.log('因播放中途退出，所以不下发游戏奖励');
                this.videoAd.offClose();

                this.adResult.string = '因播放中途退出，所以不下发游戏奖励';
                this.adResult.node.parent.active = true;
            }

            cc.audioEngine.pauseMusic();            // 先强制暂停
            cc.audioEngine.resumeMusic();           // 再恢复播放音乐
        });
    },

    showVideoAd() {
        if (!this.videoAd) {
            return;
        }

        // 用户触发广告后，显示激励视频广告
        this.videoAd.show().catch(() => {
            // 失败重试
            this.videoAd.load()
            .then(() => videoAd.show())
            .catch(err => {
                console.log(err);
                console.log('激励视频 广告显示失败');

                this.adResult.string = '激励视频 广告显示失败';
                this.adResult.node.parent.active = true;
            })
        });
    },

    closeBtn () {
        // 关掉广告结果提示板
        this.adResult.node.parent.active = false;
    }
});
